package cobaia;

import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ServidorzinhoWeb {

    private static final Logger logger = Logger.getLogger(ServidorzinhoWeb.class.getName());
    private final IFonteInformacao fonte;
    private HttpServer server = null;

    public ServidorzinhoWeb(IFonteInformacao fonte) {
        try {
            this.server = HttpServer.create(new InetSocketAddress("0.0.0.0", 9000), 100);
            this.fonte = fonte;
            server.setExecutor(null);
        } catch (IOException ex) {
            logger.log(Level.SEVERE, "Não foi possível criar o servidor", ex);
            throw new RuntimeException("Não foi possível criar o servidor", ex);
        }
    }

    public void inicia() {
        logger.info("iniciando o servidor em http://localhost:9000/");
        server.createContext("/", new HttpHandler() {

            public void handle(HttpExchange http) throws IOException {
                String resposta = fonte.getInformacao();
                
                http.getResponseHeaders().add("Content-Type", "text/html");
                http.sendResponseHeaders(200, resposta.length());

                OutputStream os = http.getResponseBody();
                os.write(resposta.getBytes());
                os.flush();
                os.close();

            }
        });
        server.start();
        logger.info("servidor pronto para receber requisições em http://localhost:9000/");
    }

    public void para() {
        logger.info("parando o servidor ...");
        server.stop(5);
        logger.info("servidor parado");
    }

    
}
